home *** CD-ROM | disk | FTP | other *** search
/ Compute! Gazette 1987 July / 1987-07.d64 / calendar maker (.txt) < prev    next >
Commodore BASIC  |  2022-09-20  |  3KB  |  68 lines

  1. 2 rem copyright 1987 compute! publications, inc. - all rights reserved
  2. 4 rem drive#  printer#  reverse on  reverse off  spacer
  3. 6 dr=8:pr=4:rv$=chr$(18):ro$=chr$(146):sp$="*"
  4. 8 s1$=" ":fori=1to21:sx$=sx$+s1$:next:s6$=left$(sx$,6):na$=chr$(0)
  5. 10 printchr$(142)chr$(8):dimm(12),y$(4),q$(6),h$(25),c$(6),m$(4)
  6. 12 fori=1to12:readm(i):next:readd$:d$=d$+" "+d$+" "+d$
  7. 14 fori=1to4:reada$,b$,c$:m$(i)=s6$+a$+left$(sx$,15)+b$+left$(sx$,15)+c$:next
  8. 16 fori=1to31:q$=q$+right$(str$(i),2)+" ":next:readf$
  9. 18 fm$=chr$(17)
  10. 20 rem --- parse year ---
  11. 22 printchr$(147)"   copyright 1987 compute! pub., inc."
  12. 24 printtab(10)"all rights reserved"
  13. 26 printfm$tab(13)"calendar maker":printtab(13)"--------------"fm$
  14. 28 input"what year would you like";y$:iflen(y$)=2theny$="19"+y$
  15. 30 y=val(y$):ify<1900ory>2050goto26
  16. 32 forj=1to4:fori=.to4:y$(j)=y$(j)+mid$(f$,i*10+val(mid$(y$,j,1))+1,1)
  17. 34 next:next
  18. 36 rem --- get text ---
  19. 38 printfm$"enter text (254 char. max).":printfm$">> ";
  20. 40 geta$:ifa$=""then40
  21. 42 ifa$=chr$(13)goto52
  22. 44 ifa$=chr$(20)andn$>""thenn$=left$(n$,len(n$)-1):goto48
  23. 46 on-(a$<" "or(a$>chr$(127)anda$<chr$(160))orlen(n$)=254)goto40:n$=n$+a$
  24. 48 printa$;:goto40
  25. 50 rem --- reverse? ---
  26. 52 print:printfm$"reverse year heading? (y/n) ":gosub120
  27. 54 on-(a$="y")-(a$="n")*2goto60,56:goto52
  28. 56 rv$=na$:ro$=na$:s1$=sp$
  29. 58 rem --- where? ---
  30. 60 printfm$"(s)creen, (p)rinter, or (d)isk?":gosub120
  31. 62 on-(a$="s")-(a$="p")*2-(a$="d")*3goto76,64,70:goto52
  32. 64 printfm$"set up printer and hit any key..."
  33. 66 getb$:ifb$=""then66
  34. 68 goto76
  35. 70 open15,dr,15,"i0:":open3,dr,3,"0:"+y$+" calendar,s,w"
  36. 72 input#15,b$,c$:ifb$<"19"goto80
  37. 74 close3:close15:printfm$"disk error -- "b$" "c$:fori=1to2000:next:goto60
  38. 76 open3,3-((a$="p")+(pr=5))
  39. 78 rem --- print heading ---
  40. 80 printfm$"working...":fori=1toint(255/(len(n$)+1)):aa$=aa$+n$+s1$:next
  41. 82 fori=1to17step4:p=.:fork=1to4:b=val(mid$(y$(k),i/4+1,1)):forl=2to.step-1
  42. 84 if(band2^l)=.thenforj=itoi+3:h$(j)=h$(j)+na$+"     "+na$:next:goto88
  43. 86 forj=itoi+3:h$(j)=h$(j)+rv$+mid$(aa$,j+p*5,5)+ro$:next
  44. 88 p=p+1:next:next:next:a$="  ":l=21:fori=1to20
  45. 90 n$=left$(h$(i),l)+a$+mid$(h$(i),22,l)+a$+mid$(h$(i),43,l)+a$+right$(h$(i),l)
  46. 92 print#3,s6$+" "+n$:next:print#3:print#3:print#3:m=1
  47. 94 rem --- print calendar ---
  48. 96 z=int(365.25*(y-1))+int(30.6*(m+13))-1
  49. 98 fori=1to10step3:forj=itoi+2:d=m(m)+(y/4=int(y/4))*(m=2)
  50. 100 ifright$(y$,2)="00"thenyc=val(left$(y$,2)):d=d-(yc/4<>int(yc/4))*(m=2)
  51. 102 z=z-int(z/7)*7:q$(1)=left$(left$(sx$,3*z)+q$,21):l=7-z:k=1:a=.
  52. 104 k=k+1:b=a:a=(l+7+d-abs(l+7-d))/2:z=a-b
  53. 106 q$(k)=left$(mid$(q$,3*l+1,3*z)+sx$,21)
  54. 108 l=l+7:on-(a<d)goto104:ifk=5thenq$(6)=sx$
  55. 110 fork=1to6:c$(k)=c$(k)+"  "+q$(k):q$(k)=sx$:next:m=m+1:next
  56. 112 print#3,s6$+m$(j/3):print#3:print#3,s6$+d$:fork=1to6
  57. 114 print#3,"     "+c$(k):c$(k)="":next:print#3:next:fori=1to3:print#3:next
  58. 116 close3:close15:printfm$"done...hit any key to continue":gosub120:print
  59. 118 printfm$"make another? (y/n)":gosub120:on-(a$<>"y")goto126:run
  60. 120 geta$:ifa$=""then120
  61. 122 return
  62. 124 rem --- data ---
  63. 126 data31,28,31,30,31,30,31,31,30,31,30,31
  64. 128 data" su mo tu we th fr sa "
  65. 130 data" january","february","  march","  april ","  may   ","   june"
  66. 132 data"  july  "," august ","september"," october","november","december"
  67. 134 data"72775777775611544155527377717752411151517777177177"
  68.